אחרי שלמדנו מהם אינדקסים וכמה הם חיוניים לביצועים של המסד שלנו - אני יספר לך מה שאנשים אחרים לא מספרים. מוכן? אינדקסים לא תמיד מועילים.
אינדקסים הם כמו תוכן העניינים של ספר. כשאתה מחפש משהו בספר אתה יכול או לקרוא את כל הספר מהתחלה ועד הסוף, או ללכת לתוכן העניינים, לאתר את המקום המדויק של מה שאתה מחפש ולקרוא רק אותו. אינדקסים מעלים את מהירות הקריאה אבל מורידים את מהירות הכתיבה ושינוי הנתונים. כשאתה משנה משהו בספר, אתה צריך לעדכן בהתאם גם את תוכן העניינים. כשאתה משנה או מוסיף הרבה דברים לספר, תוכן העניינים משתנה הרבה וזוהי פעולה לא קלה לחשב מחדש את מיקומו של כל דבר בספר.
רוצה לדעת מתי עדיף להימנע מאינדקסים?
אתה לא צריך אינדקסים במקרים
[*] כאשר שליפות הם מסוג לא שווה column!='value'. כאן אינדוקס לא עוזר.
[*] שליפה עם LIKE שבה ה-% הוא בתחילת השורה. column LIKE '%abc' חסר תועלת.
במקרים של column LIKE 'abc%' החיפוש דווקא נעזר באינדקס.
[*] ב- join לטבלה אחרת כאשר סוגי השדות שונים - האינדקס מיותר. כנ"ל עם שדה אחד הוא unsigned ובטבלה השניה הוא גם מספר אבל לא unsigned. שימו לב ששדות שלפיהם עושים join יהיו מאותו סוג נתונים.
[*] כאשר על השדה מפעילים פונקציה כלשהי md5(column) =
במקרה הזה המסד בכל זאת עובר על כל שורה שורה ומחשב עבורה את הפונקציה. עדיף לעשות את החישוב בעת ההכנסה ובשדה לשמור את התוצאה של הפונקציה.
[*] אם חשבת ליעל את order by עם אינדקס - המסד לא ישתמש בו אם בשליפה יש where
[*] אינדקס על עמודות עם ערכים שחוזרים הרבה (עמודות שהערכים בה הם כן/לא, זכן/נקבה)
במקרים האלה אינדקס לא עוזר הרבה. כנראה שאין טעם לתת אינדקסים לשדות מסוג enum & set
קח את הדברים האלה בחשבון כשאתה יוצר טבלאות
ואל תפחד, עדיך לשים אינדקס מיותר פה ושם, מאשר לא לשים אינדקסים במסד בכלל.
תגובות לכתבה:
מדריך מובן ומעולה, תודה :)
ובכול זאת מתי כן כדי?
אני חושב כאשר אתה משמתמש בפלאש ופלאש אין לו אפשרות לקידום אתרים,כמו אתר טקסט .
כאן האינדקס אני חושב שהוא עוזר לקדם את האתר
תקן אותי אם אני טועה.
תודה על המדריך.
מדובר באינדקסים של מסדי נתונים, לא באינדקס דפי זהב און ליין.
http://phpguide.co.il/מפתחות primary unique index.htm
מדריך מעולה
במקרה של פונקציה מסוימת מומלץ להפעיל את הפונקציה על הצד עם התוצאה, כך החישוב של הפונקציה ייעשה פעם אחת בלבד והחישוב יתבצע מול התוצאה המוכנה.